SGI Logo

OpenGL® For Windows® From Silicon Graphics®
Frequently Asked Questions



Contents

Update
Questions and Answers
Extensions for Silicon Graphics OpenGL Library for Windows


Update

At SIGGRAPH '97, Silicon Graphics announced that they will release a driver kit for OpenGL. Click here for more information .


Questions and Answers

[ Return to top ]


  1. What is included in the OpenGL release for Windows from SGI?

  2. Why has the name changed from Cosmo OpenGL?

  3. Can you describe SGI's OpenGL library for Windows?

  4. Why did Silicon Graphics feel the need to release an OpenGL implementation for Windows?

  5. What kind of performance are we talking about?

  6. There are numerous 3D PC APIs available. Why should developers care about OpenGL?

  7. You say OpenGL has the best image quality. Why?

  8. OpenGL has a reputation for being high-end and slow. How is top performance achieved?

  9. Has SGI's OpenGL library for Windows given up any of its vaunted image quality to achieve this performance?

  10. You say OpenGL works for the Web. What does this mean?

  11. What is SGI doing to make sure that OpenGL runs well on systems from other hardware vendors?

  12. What is SGI doing to make sure that there are good OpenGL drivers for accelerated PC's running Windows?

  13. Microsoft licensed OpenGL from Silicon Graphics and offers OpenGL for both Windows 95 and Windows NT. How does SGI's OpenGL offering on Windows fit with Microsoft's OpenGL implementations?

  14. Why does ChoosePixelFormat always return zero?

  15. Does SGI's implementation of OpenGL for Windows work with both Windows 95 and Windows NT?

  16. How can I run an application linked with SGI's OpenGL library on a system with hardware acceleration? Will the application take advantage of the hardware acceleration?

  17. I'm new to OpenGL. Where can I find out more on how to write OpenGL programs for Windows?

  18. How can I get my Windows-based OpenGL program to run in fullscreen, exclusive mode?

  19. How do I use OpenGL as a rasterization-only library?

  20. How do I tune my application for OpenGL?

[ Return to Q&A ]

  1. What is included in the OpenGL release for Windows from SGI?

    The distribution includes an OpenGL library that runs at exceptional levels of performance on Intel-based PC's running Windows. Also included is the GLU library, some example programs, some demos and a user guide.

    [ Return to Q&A ]

  2. Why has the name changed from Cosmo OpenGL?

    A major reason for creating "Cosmo OpenGL" was to ensure that there would be a fast, full-featured rendering API for the PC versions of SGI's Cosmo TM cross-platform Web development tools.

    However, many developers did not understand that Cosmo OpenGL was a fully compliant OpenGL implementation tuned for a wide range of applications, including games. Changing the name to "OpenGL for Windows from Silicon Graphics" will help developers understand that any OpenGL application, whether related to the other Cosmo products or not, can take advantage of this implementation on PC platforms.

    Note that the DLL names were changed also. The OpenGL library DLL is called OPENGL.DLL (it was previously named COSMOGL.DLL) and the GLU library DLL is called GLU.DLL (it was previously named COSMOGLU.DLL). You will need to relink your application to take advantage of the new DLLs.

    [ Return to Q&A ]

  3. Can you describe SGI's OpenGL library for Windows?

    OpenGL is a 3D graphics programming specification. OpenGL licensees have a fair degree of freedom in creating their OpenGL implementations, as long as they adhere to the specification and pass the conformance tests.

    SGI's OpenGL library implementation for Windows, features optimizations that PCs require for rendering Web and games-oriented 3D applications efficiently.

    The optimizations include:

    1. Pentium-specific tuning in both the geometry and rasterization portions of the OpenGL graphics pipeline.
    2. MMX tuning in the rasterization portion of the pipeline, improving fill rates 3X-7X on processors supporting the MMX instruction set.
    3. Seven new extensions have been added.

    [ Return to Q&A ]

  4. Why did Silicon Graphics feel the need to release an OpenGL implementation for Windows?

    Silicon Graphics has made a substantial commitment to creating Web Products - the Cosmo suite of authoring and development tools and Cosmo Player, a VRML browser. SGI's OpenGL library ensures that applications perform well when the target platform is an unaccelerated Windows PC or a PC with MMX acceleration.

    [ Return to Q&A ]

  5. What kind of performance are we talking about?

    The best way to measure the performance of any graphics library is to run it against your application. That said, there are a couple of simple benchmarks that will be provided in SGI's OpenGL distribution for Windows to help you characterize the performance of the OpenGL implementation you are using:
    1. RB.C measures the performance of OpenGL rasterization for a wide variety of modes.
    2. SPHERE.C measures the performance of rendering RGB, lit tristrips with different attribute settings.

  6. [ Return to Q&A ]

  7. There are numerous 3D PC APIs available. Why should developers care about OpenGL?

    There are many reasons why developers should care about OpenGL:

    1. OpenGL has been available for over 5 years. It has a track record of stability and success.
    2. There are thousands of OpenGL-based applications available today.
    3. OpenGL is a truly open standard and available on virtually every Unix workstation, PC and Mac.
    4. OpenGL scales very well. There are OpenGL implementations for unaccelerated PCs, for accelerated PCs and workstations, and for very high-performance graphics workstations such as the InfiniteReality from Silicon Graphics.
    5. OpenGL allows developers to create applications with exceptional image quality while delivering top performance.
    6. OpenGL will be the dominant rendering interface for 3D on the Web.

    [ Return to Q&A ]

  8. You say OpenGL has the best image quality. Why?

    The other PC graphics APIs were initially designed for games development. The standard for a games API is to minimize visual detail in order to achieve high performance. At the time these APIs appeared, both CPU and graphics capability on the PC were very limited. Even though PC technology has improved, the inherent image quality limitations in the APIs remain as a legacy.

    One of OpenGL's design goals was to make image quality a priority. It was developed in an environment that expected reasonable system performance. OpenGL's design is very well suited for today's PC capabilities.

    As a result, SGI's OpenGL library for Windows delivers high performance without exhibiting the annoying rendering artifacts found with other APIs.

    [ Return to Q&A ]

  9. OpenGL has a reputation for being high-end and slow. How is top performance achieved?

    Top performance is achieved by creating an implementation that is based on a thorough knowledge of graphics technology and the underlying microprocessor.

    The poor reputation that OpenGL has found in the low-end PC market was due to the lack of a well-tuned implementation. SGI's OpenGL library for Windows will improve this reputation greatly.

    SGI had not applied its extensive 3D API knowledge to the PC platform previously. SGI's OpenGL library for Windows demonstrates that high-end is a desirable quality and that it is not synonymous with being slow.

    [ Return to Q&A ]

  10. Has SGI's OpenGL library for Windows given up any of its vaunted image quality to achieve this performance?

    No. However, the application developer may choose to make trade-offs between image quality and performance if desired. This is done at the discretion of the developer, not because the API limits their choices.

    SGI's OpenGL library for Windows passes the OpenGL conformance tests. This assures developers that it provides a defined minimum level of image quality.

    [ Return to Q&A ]

  11. You say OpenGL works for the Web. What does this mean?

    OpenGL has a number of features that make it the premier low level graphics API for the Web:

    1. It is the rendering layer for Cosmo Player, the premier VRML browser for interactive, 3D worlds.
    2. OpenGL Java bindings will soon be available.
    3. The OpenGL API is available on almost any computer system, from PCs to workstations. Java is also designed to be platform independent. For an API to be successful in this market, it must be available on all platforms.

    [ Return to Q&A ]

  12. What is SGI doing to make sure that OpenGL runs well on systems from other hardware vendors?

    Hardware and system vendors can license the source code for SGI's OpenGL library for Windows. This source code is an excellent starting point for creating an OpenGL driver for accelerated 3D systems or for creating a fast OpenGL implementation for systems with no dedicated graphics hardware.

    [ Return to Q&A ]

  13. What is SGI doing to make sure that there are good OpenGL drivers for accelerated PCs running Windows?

    As mentioned above, SGI is licensing the source for their OpenGL implementation for Windows to hardware vendors providing 3D graphics acceleration for the PC. Since the first MR of their OpenGL on Windows implementation, SGI has put their energy into developing a driver kit that would allow hardware vendors to develop ICD drivers quickly. The beta release of this ICD driver kit was sent out in November. The driver kit has a simple rasterization interface, making it easy for hardware vendors to quickly write OpenGL drivers for 3D cards that accelerate rasterization. The driver kit also supports hardware that accelerates transforms and lighting and contains a comprehensive OpenGL test suite to ensure that the resulting drivers are high quality.

    [ Return to Q&A ]

  14. Microsoft licensed OpenGL from Silicon Graphics and offers OpenGL for both Windows 95 and Windows NT. How does SGI's OpenGL offering for Windows fit with Microsoft's OpenGL implementations?

    SGI's OpenGL library for Windows complements the latest Microsoft implementations of OpenGL. All are based on OpenGL version 1.1. However, Silicon Graphics' focus for their OpenGL library has been on extremely high rendering performance when there is no dedicated 3D graphics hardware present. Specifically SGI's OpenGL library for Windows accelerates indexed rendering, improves the fill rate for RGB rendering and provides extensions (SGI_cull_vertex and SGI_compiled_vertex_array) to improve polygon throughput. SGI's OpenGL library also takes advantage of the MMX processor, which greatly improves the fill rate on unaccelerated PC's. In addition, SGI is licensing the source for their library, providing an excellent starting point for hardware vendors that wish to provide OpenGL ICD drivers.

    Although SGI's library is faster for triangle rendering, Microsoft's library renders points and lines faster. Also, Microsoft has done an excellent job of creating an environment that allows 3D graphics hardware vendors to accelerate OpenGL on Windows 95 and Windows NT. Microsoft supports two driver models for OpenGL: the installable client driver (ICD) which works on both Windows 95 and Windows NT and the mini client driver (MCD) which works on Windows NT only. Click here for more information on OpenGL from Microsoft.

    We have been very careful to make sure that both SGI's OpenGL library and Microsoft's OpenGL library will coexist on the same PC.

    [ Return to Q&A ]

  15. Why does ChoosePixelFormat always return zero?

    SGI's OpenGL library for Windows overloads the ChoosePixelFormat function in GDI in order to return the proper format information. The application must link opengl.lib and glu.lib before gdi32.lib in the library list or the wrong version of ChoosePixelFormat will be called.

    [ Return to Q&A ]

  16. Does SGI's implementation of OpenGL for Windows work with both Windows 95 and Windows NT?

    Yes. The beta release of the software did not work with Windows NT unless Microsoft's OpenGL library for Windows NT was installed. In the beta release, function calls to SGI's OpenGL library pass through to Microsoft's version. However, in the latest MR release of SGI's software, Windows NT is directly supported.

    [ Return to Q&A ]

  17. How can I run an application linked with SGI's OpenGL library on a system with hardware acceleration? Will the application take advantage of the hardware acceleration?

    SGI's OpenGL library normally runs without acceleration. However, on systems with an OpenGL driver for hardware acceleration, the library will defer to the Microsoft version of OpenGL which uses the hardware acceleration.

    [ Return to Q&A ]

  18. I'm new to OpenGL. Where can I find out more on how to write OpenGL programs for Windows?

    The Guide to OpenGL on Windows from Silicon Graphics contains some simple examples showing how to write windows-based OpenGL applications. There are also quite a few books and articles on OpenGL. These are detailed on the OpenGL web site.

    [ Return to Q&A ]

  19. How can I get my Windows-based OpenGL program to run in fullscreen, exclusive mode?

    You need to call the GDI function ChangeDisplaySettings. Click here to look at an example program that does this. You can also use MGL which is available from from SciTech Software Inc.

    [ Return to Q&A ]

  20. How do I use OpenGL as a rasterization-only library?

    Since many PC systems perform the transform and lighting calculations on the host, you may prefer to transform and light the geometry yourself and just use OpenGL for rasterization. This is easy to do. Click Here to read about how to do this and get some example code.

    If exact two-dimensional rasterization is desired, you must carefully specify the orthographic projection matrix, as detailed on the web site given above. You must also carefully specify the vertices of primitves that are to be rasterized. If the orthographic projection is specified as gluOrtho2D(0, width, 0, height) (where width and height are the viewport dimensions), then polygon vertices and pixel image positions need to be placed at integer coordinates to rasterize predictably. For example, glRecti(0, 0, 1, 1) reliably fills the lower left pixel of the viewport, and glRasterPos2i(0, 0) reliably positions an unzoomed image at the lower left of the viewport. Point vertices, line vertices and bitmap positions should be placed at half-integer locations, however. For example, a line drawn from (x1, 0.5) to (x2, 0.5) will be reliably rendered along the bottom row of pixels into the veiwport, and a point drawn at (0.5, 0.5) will reliably fill the same pixel as glRecti(0, 0, 1, 1).

    If you want to specify all primitives at integer postions, while still ensuring predictable rasterization, then you can simply translate x and y by 0.375. That is, instead of setting the model-view matrix to identity, load a translation matrix that translates 0.375 in x and y.

    [ Return to Q&A ]

  21. How do I tune my application for OpenGL?

    The Guide to OpenGL on Windows from Silicon Graphics covers the steps you should follow when tuning your application for OpenGL. In addition you may want to characterize the performance of OpenGL for the particular system you are on and adjust your program accordingly. (For example, you may want to change which texture filter mode you are using depending on the performance.) libisfast provides an example and starting point for doing this.


Extensions for Silicon Graphics OpenGL Library for Windows

As mentioned above, the performance for SGI's OpenGL library is achieved through a combination of tuning and new extensions. The first six of the following seven OpenGL extensions were developed specifically for SGI's OpenGL library for Windows. The seventh, EXT_paletted_texture, was previously introduced as a standard OpenGL extension by Microsoft.


OpenGL
We welcome feedback and comments at win-opengl@sgi.com.